package jdbc;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author Dianzhi Han
 * @version 1.0
 * @description: TODO
 * @date 2022/10/27 20:24
 */
public class JdbcTest {
    public static void main(String[] args) throws SQLException {
        // 1.获取数据源 - 数据具体是从哪个数据库来的
        // DataSource这个接口无论哪种具体的数据库驱动都要实现此接口，具体是什么数据库名称数据库名称 + DataSource
        // MySQLDataSource
        // SQliteDataSource
        MysqlDataSource dataSource = new MysqlDataSource();
        // 1.1 设置数据源的连接地址，用户名，密码等属性
        // 发起TCP请求，按照指定的协议(jdbc协议)连接到数据库的服务端
        // 大家根据自己的MySQL的情况，数据库的名称，密码，用户名等等需要修改
        dataSource.setURL("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&useSSL=false");
        dataSource.setUser("root");
        dataSource.setPassword("34607887");
        // 2.获取数据库连接 - Connection接口的对象
        // 这一步才会向数据库服务器发起请求
        Connection connection = dataSource.getConnection();
        // 3.执行具体的SQL语句，每个SQL语句对应一个PrepareStatement对象
        String sql = "select username from teacher where base_salary >= ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        // 1就是将第一个?的内容替换为具体的值(此处就把name = ? => name = 孙悟空)
        // set数据类型要和数据库的列属性保持一致
        statement.setString(1,"1000");
        // 4.具体执行操作，增删改 excuteUpdate() => int 本次修改操作受影响的行数
        // 查询操作 select =》 excuteQuery() => ResultSet =》 查询结果集
        ResultSet resultSet = statement.executeQuery();
        // 5.遍历结果集
        while (resultSet.next()) {
            String pass = resultSet.getString("username");
            System.out.println(pass);
        }
        // 6.数据库属于资源操作，一定要记得关闭资源，结果集对象，连接对象
        resultSet.close();
        connection.close();
    }
}
